Return to start page

Core/Environment/Library Destructable.j

Code

		
1			library ALibraryCoreEnvironmentDestructable
2
3 /// @author PitzerMike
4 function IsDestructableDead takes destructable usedDestructable returns boolean
5 return GetDestructableLife(usedDestructable) <= 0.405
6 endfunction
7
8 /**
9 * You could use globals instead of locals for dummy and player.
10 * @author PitzerMike
11 */
12 function IsDestructableTree takes destructable usedDestructable returns boolean
13 local player neutralPassivePlayer = Player(PLAYER_NEUTRAL_PASSIVE)
14 local boolean isInvulnerable = IsDestructableInvulnerable(usedDestructable)
15 local unit dummy = CreateUnit(neutralPassivePlayer, 'h000', GetWidgetX(usedDestructable), GetWidgetY(usedDestructable), 0.0)
16 local boolean result = false
17 call UnitAddAbility(dummy, 'Ahrl')
18 if (isInvulnerable) then
19 call SetDestructableInvulnerable(usedDestructable, false)
20 endif
21 set result = IssueTargetOrder(dummy, "harvest", usedDestructable)
22 call RemoveUnit(dummy)
23 set dummy = null
24 if (isInvulnerable) then
25 call SetDestructableInvulnerable(usedDestructable, true)
26 endif
27 set neutralPassivePlayer = null
28 return result
29 endfunction
30
31 /**
32 * Creates a dummy unit which tries to harvest the filtered destructable.
33 * It should only used by filters.
34 * @return Returns true if the filtered destructable is a tree.
35 * @author PitzerMike
36 */
37 function TreeFilter takes nothing returns boolean
38 local destructable filterDestructable = GetFilterDestructable()
39 local boolean result = IsDestructableTree(filterDestructable)
40 set filterDestructable = null
41 return result
42 endfunction
43
44 endlibrary